package com.csw.shuanfa.CodeImprove.designPattern;

/**
 * 工厂模式
 */
public class FactoryD {
    /**
     * @param args
     */
    public static void main(String[] args) {
        Product productA = Factory.createProduct("A");
        productA.use();
        Product productB = Factory.createProduct("B");
        productB.use();

    }
}

/**
 * 定义抽象产品类
 */
abstract class Product {
    public abstract void use();
}

/**
 * 定义具体产品类
 */
class ProductA extends Product {

    @Override
    public void use() {
        System.out.println("使用产品A");
    }
}

class ProductB extends Product {

    @Override
    public void use() {
        System.out.println("使用产品B");
    }
}

/**
 * 定义工厂类
 */
class Factory {
    public static Product createProduct(String type) {
        if ("A".equals(type)) {
            return new ProductA();
        } else if ("B".equals(type)) {
            return new ProductB();
        } else {
            throw new RuntimeException("无效的产品类型");
        }
    }
}
